home *** CD-ROM | disk | FTP | other *** search
/ Java Primer Plus / Java Primer Plus (Waite Group Proess)(1996).iso / java_Win / demo / TumblingDuke / TumbleItem.class (.txt) < prev    next >
Encoding:
Java Class File  |  1995-12-07  |  2.7 KB  |  102 lines

  1. import java.applet.Applet;
  2. import java.awt.Component;
  3. import java.awt.Dimension;
  4. import java.awt.Graphics;
  5. import java.awt.Image;
  6.  
  7. public class TumbleItem extends Applet implements Runnable {
  8.    int loopslot;
  9.    String dir;
  10.    Thread kicker;
  11.    int pause;
  12.    int offset;
  13.    int off;
  14.    int speed;
  15.    int nimgs;
  16.    Image[] imgs;
  17.    int maxWidth;
  18.  
  19.    public void init() {
  20.       String var1 = ((Applet)this).getParameter("img");
  21.       this.dir = var1 != null ? var1 : "images/tumble";
  22.       var1 = ((Applet)this).getParameter("pause");
  23.       this.pause = var1 != null ? Integer.valueOf(var1) : 3900;
  24.       var1 = ((Applet)this).getParameter("offset");
  25.       this.offset = var1 != null ? Integer.valueOf(var1) : 0;
  26.       var1 = ((Applet)this).getParameter("speed");
  27.       this.speed = var1 != null ? 1000 / Integer.valueOf(var1) : 100;
  28.       var1 = ((Applet)this).getParameter("nimgs");
  29.       this.nimgs = var1 != null ? Integer.valueOf(var1) : 16;
  30.       var1 = ((Applet)this).getParameter("maxwidth");
  31.       this.maxWidth = var1 != null ? Integer.valueOf(var1) : 0;
  32.    }
  33.  
  34.    public void run() {
  35.       Thread.currentThread().setPriority(4);
  36.       this.imgs = new Image[this.nimgs];
  37.  
  38.       for(int var1 = 1; var1 < this.nimgs; ++var1) {
  39.          this.imgs[var1] = ((Applet)this).getImage(((Applet)this).getDocumentBase(), this.dir + "/T" + var1 + ".gif");
  40.       }
  41.  
  42.       Dimension var2 = ((Component)this).size();
  43.       if (this.nimgs > 1) {
  44.          if (this.offset < 0) {
  45.             this.off = var2.width - this.maxWidth;
  46.          }
  47.  
  48.          while(this.kicker != null) {
  49.             if (++this.loopslot >= this.nimgs) {
  50.                this.loopslot = 0;
  51.                this.off += this.offset;
  52.                if (this.off < 0) {
  53.                   this.off = var2.width - this.maxWidth;
  54.                } else if (this.off + this.maxWidth > var2.width) {
  55.                   this.off = 0;
  56.                }
  57.             }
  58.  
  59.             ((Component)this).repaint();
  60.  
  61.             try {
  62.                Thread.sleep((long)(this.speed + (this.loopslot == this.nimgs - 1 ? this.pause : 0)));
  63.             } catch (InterruptedException var3) {
  64.                return;
  65.             }
  66.          }
  67.       }
  68.  
  69.    }
  70.  
  71.    public boolean imageUpdate(Image var1, int var2, int var3, int var4, int var5, int var6) {
  72.       if ((var2 & 56) != 0 && this.imgs != null && this.loopslot < this.nimgs && this.imgs[this.loopslot] == var1) {
  73.          ((Component)this).repaint(100L);
  74.       }
  75.  
  76.       return (var2 & 96) == 0;
  77.    }
  78.  
  79.    public void paint(Graphics var1) {
  80.       if (this.imgs != null && this.loopslot < this.nimgs && this.imgs[this.loopslot] != null) {
  81.          var1.drawImage(this.imgs[this.loopslot], this.off, 0, this);
  82.       }
  83.  
  84.    }
  85.  
  86.    public void start() {
  87.       if (this.kicker == null) {
  88.          this.kicker = new Thread(this);
  89.          this.kicker.start();
  90.       }
  91.  
  92.    }
  93.  
  94.    public void stop() {
  95.       if (this.kicker != null) {
  96.          this.kicker.stop();
  97.          this.kicker = null;
  98.       }
  99.  
  100.    }
  101. }
  102.